// src/utils/tokenUtils.ts

/**
 * 将 JWT Token 转换为 SRU 编号
 * @param token JWT Token 字符串
 * @returns 生成的 SRU 编号
 */
export function generateSRUNumberFromToken(token: string): string {
  try {
    // 提取 Token 的 Payload 部分
    const payloadBase64 = token.split('.')[1];
    if (!payloadBase64) {
      throw new Error('Invalid token format');
    }

    // Base64 解码 Payload
    const decodedPayload = atob(payloadBase64);
    const payload = JSON.parse(decodedPayload);

    // 提取关键字段（如 sub 和 exp）
    const { sub, exp } = payload;

    // 拼接字段并生成唯一编号
    const sruNumber = `SRU${btoa(`${sub}`)}`; // Base64 编码确保唯一性
    return sruNumber;
  } catch (error) {
    console.error('Failed to generate SRU number from token:', error);
    return 'SRU-INVALID'; // 返回默认值
  }
}

/**
 * 从 JWT Token 中提取用户名
 * @param token JWT Token 字符串
 * @returns 用户名或默认值 'Unknown User'
 */
export function extractUsernameFromToken(token: string): string {
  try {
    // 提取 Token 的 Payload 部分
    const payloadBase64 = token.split('.')[1];
    if (!payloadBase64) {
      throw new Error('Invalid token format');
    }

    // Base64 解码 Payload
    const decodedPayload = atob(payloadBase64);
    const payload = JSON.parse(decodedPayload);

    // 提取用户名字段（优先使用 username，否则使用 sub）
    const username = payload.username || payload.sub || 'Unknown User';
    return username;
  } catch (error) {
    console.error('Failed to extract username from token:', error);
    return 'Unknown User'; // 返回默认值
  }
}
